package proycompalex1;
import java.util.HashMap;
/**
* Al crear objetos instancia de esta clase se crea un HashMap<b>&#60String,String></b>.
*Donde las llaves del HashMap son los lexemas validos en el lenguaje Minijava
*Para identificar un numero se debe preguntar por "num", y para obtener el nombre
* del token id, se debe preguntar por "0".
*/
public class tablaToken {
    private HashMap<String,String> tabla = new HashMap<String,String>();

/**
*El constructor de la clase hace uso de un método privado para la creacion de
*toda la tabla
*
*/
    public tablaToken() {
           cargarTablaToken();
    }
    private void cargarTablaToken()
    {
        tabla.put("class","CLASS");
        tabla.put("extends","EXTENDS");
        tabla.put("super","SUPER");
        tabla.put("void","VOID");
        tabla.put("public","PUBLIC");
        tabla.put("protected","PROTECTED");
        tabla.put("static","STATIC");
        tabla.put("this","THIS");
        tabla.put("new","NEW");
        tabla.put("boolean","BOOLEAN");
        tabla.put("int","INT");
        tabla.put("char","CHAR");
        tabla.put("if","IF");
        tabla.put("else","ELSE");
        tabla.put("while","WHILE");
        tabla.put("return","RETURN");
        tabla.put("num","NUM");
        tabla.put("char","CHAR");
        tabla.put("String","STRING");
        tabla.put("null","NULL");
        tabla.put("{","LLAVE_A");
        tabla.put("}","LLAVE_C");
        tabla.put("(","PARENT_A");
        tabla.put(")","PARENT_C");
        tabla.put(";","SEP");
        tabla.put("&&","AND");
        tabla.put("||","OR" );
        tabla.put("==","IGUAL");
        tabla.put("=","OP_ASIG");
        tabla.put("!","NOT");
        tabla.put("!=","DISTINTO");
        tabla.put("<","MENOR");
        tabla.put(">","MAYOR");
        tabla.put("<=","MENOR_IGUAL");
        tabla.put(">=","MAYOR_IGUAL");
        tabla.put("+","OP_SUMA");
        tabla.put("-", "OP_RESTA");
        tabla.put("*","OP_MULT");
        tabla.put("/","OP_DIV");
        tabla.put("%","OP_MOD");
        tabla.put(",","COMA");
        tabla.put(".","PUNTO");
        tabla.put("true","TRUE");
        tabla.put("false","FALSE");
        tabla.put("0","ID");
    }
/**
*Dado un lexema se consulta a la tabla la existencia de este lexema dentro
*de las llaves, de existir se retorna el nombre del Token corresponiente
*@param lexema se usara como llave de la busqueda
*@return String en caso de existir el nombre de token correspondiente al valor de
 * clave {@link lexema} se retorna dicho nombre, caso contrario retorna null
*/
    public String obtenerNomToken(String lexema)
    {
        String aux=tabla.get(lexema);
        return aux;
    }
}//clase
